package com.jyw.business.ast.service;

import java.util.List;

import com.jyw.business.ast.domain.AstInfo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jyw.business.ast.domain.dto.AstOptionDto;
import com.jyw.business.ast.domain.dto.web.*;
import com.jyw.business.ast.domain.vo.web.*;
import com.jyw.common.core.domain.CommonResult;
import com.jyw.common.core.page.BasePage;
import org.springframework.web.multipart.MultipartFile;

/**
 * 资产-资产信息Service接口
 *
 * @author system
 * @date 2023-09-20
 */
public interface IAstInfoService extends IService<AstInfo> {
    /**
     * 查询资产-资产信息
     *
     * @param id 资产-资产信息主键
     * @return 资产-资产信息
     */
    public AstInfo selectAstInfoById(Long id);

    /**
     * 查询资产-资产信息列表
     *
     * @param astInfo 资产-资产信息
     * @return 资产-资产信息集合
     */
    public List<AstInfo> selectAstInfoList(AstInfo astInfo);

    /**
     * 查询巡检计划选择资产
     *
     * @return
     */
    List<AstInfo> selectPlanAstList();

    /**
     * 新增资产-资产信息
     *
     * @param astInfo 资产-资产信息
     * @return 结果
     */
    public int insertAstInfo(AstInfo astInfo);

    /**
     * 修改资产-资产信息
     *
     * @param astInfo 资产-资产信息
     * @return 结果
     */
    public int updateAstInfo(AstInfo astInfo);

    /**
     * 批量删除资产-资产信息
     *
     * @param ids 需要删除的资产-资产信息主键集合
     * @return 结果
     */
    public int deleteAstInfoByIds(Long[] ids);

    /**
     * 删除资产-资产信息信息
     *
     * @param id 资产-资产信息主键
     * @return 结果
     */
    public int deleteAstInfoById(Long id);

    /**
     * 新增资产
     *
     * @param addDto
     */
    void add(AstAddDto addDto);

    /**
     * 资产登记分页查询
     *
     * @param page
     * @param dto
     * @return
     */
    public List<AstPageVo> signPage(BasePage page, AstPageDto dto);

    /**
     * 查询资产详情
     *
     * @param id
     * @return
     */
    AstDetailVo detail(Long id);

    /**
     * 资产编辑
     *
     * @param editDto
     */
    void edit(AstEditDto editDto);

    /**
     * 删除资产
     *
     * @param ids
     */
    void remove(Long[] ids);

    /**
     * 批量登记资产
     *
     * @param addDto
     */
    void batchAdd(AstBatchAddDto addDto);

    /**
     * 查询巡检单元资产选择
     *
     * @param insUnitAstPageDto
     * @return
     */
    List<InsUnitAstPageVO> pageUnitAstList(InsUnitAstPageDto insUnitAstPageDto);

    /**
     * 资产到期处置
     * @param dto
     */
    void dispose(AstExpireDisposeDto dto);

    /**
     * 资产导入
     * @param file
     */
    void importData(MultipartFile file);

    /**
     * 生成资产码
     * @return
     */
    String generateAssetCode();

    /**
     * 根据巡检单位查询名称
     * @param name
     * @return
     */
    Long findInsUnitByName(String name);

    /**
     * 可选
     * @param dto
     * @return
     */
    List<AstPageVo> option(AstOptionDto dto);

    /**
     * 资产导出数据
     * @param dto
     * @return
     */
    List<AstInfoExportVo> export(AstPageDto dto);

    /**
     * 资产打印
     * @param ids
     * @return
     */
    List<AstPrintVo> print(Long[] ids);
}
